package com.hellpro.lolbox.mine.presenter;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.widget.Toast;

import com.hellpro.lolbox.mine.BmobUser;
import com.hellpro.lolbox.mine.model.LoginBiz;
import com.hellpro.lolbox.mine.view.ILoginActivity;
import com.hellpro.lolbox.utils.ToastShowCenter;

import org.greenrobot.eventbus.EventBus;

import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.SaveListener;

/**
 * 类描述:
 * 创建人:阿犇
 * 创建时间:2016/10/23
 * 备注:处理登录页面的逻辑
 */

public class LoginPresenter {

    private ILoginActivity mILoginActivity;
    private final LoginBiz loginBiz;

    public LoginPresenter(ILoginActivity iLoginActivity) {
        loginBiz = new LoginBiz();
        this.mILoginActivity = iLoginActivity;
    }


    /**
     * 类描述:
     * 创建人:阿犇
     * 创建时间:2016/10/23
     * 备注:处理登录事件的方法
     */
    public void setLoginInfo() {

        final String mPhoneNo = mILoginActivity.getEtUserName().getText().toString();
        final String mPassWord = mILoginActivity.getEtPassWord().getText().toString();
        final Context context = mILoginActivity.getLoginContext();

        boolean mobileNo = isMobileNo(mPhoneNo);
        if (!mobileNo) {
            ToastShowCenter.centerToast(context, "手机号格式有误");
            mILoginActivity.getEtUserName().setText("");
            mILoginActivity.getEtPassWord().setText("");
        } else {
            if (mPassWord.length() < 6) {
                ToastShowCenter.centerToast(context, "密码长度不能小于6");
                mILoginActivity.getEtUserName().setText("");
                mILoginActivity.getEtPassWord().setText("");
            } else {
                if (mPassWord.isEmpty()) {
                    ToastShowCenter.centerToast(context, "密码不能为空");
                    mILoginActivity.getEtUserName().setText("");
                    mILoginActivity.getEtPassWord().setText("");
                } else {

                    BmobUser user = new BmobUser();
                    user.setUsername(mPhoneNo);
                    user.setPassword(mPassWord);
                    SharedPreferences sp = mILoginActivity.getSP();
                    SharedPreferences.Editor edit = sp.edit();
                    edit.putBoolean("isLogin", true);
                    edit.apply();
                    user.login(new SaveListener<BmobUser>() {
                        @Override
                        public void done(BmobUser user, BmobException e) {
                            if (e == null) {
                                //TODO:跳转到主页面
                                Toast.makeText(context, "登陆成功", Toast.LENGTH_SHORT).show();
                                EventBus.getDefault().post(user);

                            } else {
                                Toast.makeText(context, "登录失败", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
            }
        }
    }

    /**
     * 验证手机格式
     */
    public static boolean isMobileNo(String mobiles) {
    /*
    移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
    联通：130、131、132、152、155、156、185、186
    电信：133、153、180、189、（1349卫通）
    总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
    */
        String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        return !TextUtils.isEmpty(mobiles) && mobiles.matches(telRegex);
    }
}



